package sharetime.playlist.service;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import sharetime.playlist.domain.Playlist;
import sharetime.playlist.domain.Resource;
import sharetime.user.domain.UserData;

public interface IPlaylistManager {

	public Playlist getPlaylistById(long id);
	
	public void removePlaylist(long id);

	public void createPlaylist(Playlist playlist);
	
	public void updatePlaylist(Playlist playlist);

	public Playlist copyPlaylist(Playlist oldPlaylist, UserData owner);

	public List<Playlist> getHiddenPlaylist(long userId);

	public List<Playlist> getUnHiddenPlaylist(long userId);
	
	/*
	 * Return ArrayList of all unique resources represented by the playlist.
	 */
	public ArrayList<Resource> getUniqueResources(Collection<Playlist> playlists);
	
	public void recomputeScore(long playlistId);
	
	public void incrementViewCount(int playlistId);

}
